import os
import logging
from datetime import datetime

FOMMATER = '[%(asctime)s](%(levelname)s) {pid:%(process)d, tid:%(thread)d, %(filename)s}, %(module)s.%(funcName)s %(lineno)d: %(message)s\r'
LOG_HOME = os.path.join(os.getcwd(), 'logs')
if not os.path.exists(LOG_HOME):
    os.makedirs(LOG_HOME)


def get_logger(file_name=None):
    # 第一步，创建一个logger
    date_format = datetime.now().strftime("%Y-%m-%d")
    if not file_name:
        file_name = "log_error_{}.log".format(date_format)
    else:
        file_name = file_name + "_{}".format(date_format)
    logger = logging.getLogger()
    logger.setLevel(logging.INFO)  # Log等级总开关

    # 第二步，创建一个handler，用于写入日志文件
    logfile = os.path.join(LOG_HOME, file_name)
    fh = logging.FileHandler(logfile, mode='a', encoding="utf8")  # open的打开模式这里可以进行参考
    fh.setLevel(logging.ERROR)  # 输出到file的log等级的开关

    # 第三步，再创建一个handler，用于输出到控制台
    ch = logging.StreamHandler()
    ch.setLevel(logging.WARNING)  # 输出到console的log等级的开关

    # 第四步，定义handler的输出格式
    formatter = logging.Formatter(FOMMATER)
    fh.setFormatter(formatter)
    ch.setFormatter(formatter)

    # 第五步，将logger添加到handler里面
    logger.addHandler(fh)
    logger.addHandler(ch)

    return logger


if __name__ == '__main__':
    # pass
    #
    # from libs.logerr_util import get_logger

    util_logger = get_logger()
